Declare PFilename#,anzahl&,filenames$,RButton1&,RButton2&,gbox&,bt_dateien&
Def DragAcceptFiles(2) !"SHELL32","DragAcceptFiles"
Def DragFinish(1) !"SHELL32","DragFinish"
Def DragQueryFile(4) !"SHELL32","DragQueryFileA"
Def GetSysColor(1)!"USER32","GetSysColor"
Def DateiEndung(1) "."+SubStr$(@$(1),-1,".")

Dim PFileName#,261
UserMessages 16

Windowstyle 26
Window %maxx,%maxy-290,158
Windowtitle "Transparent-Remover"
ShowWindow(%hwnd,0)
cls GetSysColor(15)
SetDialogFont Create("Font","Arial",21,0,0,1,0)

bt_dateien&=Create("Button",%hwnd,"Bild auswählen/hierher ziehen",5,5,width(%hwnd)-10,60)
SetDialogFont Create("Font","Arial",18,0,0,1,0)
gbox&=Create("GroupBox",%hwnd,"Optionen:",5,69,width(%hwnd)-10,58)
RButton1&=Create("RadioButton",gbox&,"Kopie erstellen",15,25,115,20)
Setcheck RButton1&,1
RButton2&=Create("RadioButton",gbox&,"Direkt Ersetzen",140,25,120,20)
DragAcceptFiles(bt_dateien&,1)
if (Upper$(SubStr$(Par$(0), -1, "\\"))<>"PROFAN.EXE") and (Upper$(SubStr$(Par$(0), -1, "\\"))<>"XPROFAN.EXE") 'Bei Interpreter überspringen
  WhileLoop 1, %ParCount 'Kommandozeilen-Parameter aufnehmen
    case (Upper$(DateiEndung(Par$(&Loop)))=".PNG") or (Upper$(DateiEndung(Par$(&Loop)))=".GIF") or (Upper$(DateiEndung(Par$(&Loop)))=".BMP") : RemoveTransparents(Par$(&Loop)) 'Mit Programm geöffnete Bilder abarbeiten
    case (&loop=%ParCount) and  (%ParCount>0) : AppExit
  Endwhile
Endif
Setwindowpos %hwnd=100,200-290,158;-1
while 1
    GetMessage
    IF %message=563 'Drag&Drop
        anzahl&=DragQueryFile(&WParam,$FFFFFFFF,PFilename#,261)
        Whileloop anzahl&
            DragQueryFile(&WParam,&loop-1,PFilename#,261)
            filenames$=String$(PFilename#,0)
            if (Upper$(DateiEndung(filenames$))=".PNG") or (Upper$(DateiEndung(filenames$))=".GIF") or (Upper$(DateiEndung(filenames$))=".BMP")
                RemoveTransparents(filenames$)
            else
                anzahl&=anzahl&-1
            Endif
        Endwhile
        DragFinish(&WParam)
        case anzahl&>0 : Messagebox(Str$(anzahl&)+" Bilder erfolgreich verarbeitet!","Aktion ausgeführt!",64)
    elseif getfocus(bt_dateien&) 'LadeDialog
        filenames$=LoadFile$(%hwnd, "Bilder auswählen:","Alle Dateien|*.PNG;*.GIF;*.BMP|PNG|*.PNG|GIF|*.GIF|BMP|*.BMP",1)
        if filenames$<>""
            anzahl&=2
            while SubStr$(filenames$,anzahl&,"|")<>""
              Messagebox(SubStr$(filenames$,1,"|")+"\"+SubStr$(filenames$,anzahl&,"|"),Str$(anzahl&-1),0)
              RemoveTransparents(SubStr$(filenames$,1,"|")+"\"+SubStr$(filenames$,anzahl&,"|"))
              anzahl&=anzahl&+1
            Endwhile
            Messagebox(Str$(anzahl&-2)+" Bilder erfolgreich verarbeitet!","Aktion ausgeführt!",64)
        Endif
        Setfocus(%hwnd)
    elseif %umessage=16 'Programm beenden
        break
    EndIf
Endwhile
AppExit

Proc RemoveTransparents
Parameters bild$
var hpic&=Create("hPic",-1,bild$)
case GetCheck(RButton1&)<>1 : Erase bild$
SavePic SubStr$(bild$,-2,".")+If(GetCheck(RButton1&)=1," - Kopie","")+DateiEndung(bild$), hpic&
DeleteObject hpic&
Return 1
EndProc
Proc AppExit
Dispose PFileName#
DragAcceptFiles(bt_dateien&,0)
End
EndProc